#!/usr/bin/perl -w

#========================================================
# lsreadable
# File ID: 09014434-5d3f-11df-b91a-90e6ba3022ac
# Leser filnavn fra stdin eller en fil og skriver ut alle
# som er lesbar. Hvis -u spesifiseres, listes alle som
# IKKE er leselige. Hvis -w skrives, listes alle
# skrivelige/uskrivelige ting ut istedenfor.
#========================================================

use strict;
use Getopt::Std;

our ($opt_h, $opt_u, $opt_w) =
    (     0,      0,      0);

$| = 1;

getopts('huw') || die("Option error, -h for help\n");

if ($opt_h) {
	print(<<END);

Syntax: $0 [options]

Reads filenames or directory names from stdin and prints name of every
file that is readable. This behaviour can be modified by the following
options:

-u  Print file names of files which is NOT readable.
-w  Check for write permissions instead of read permissions.

NOTE: Options may change in the future.

END
	exit(0);
}

# Gjøres på amøbemåte for å få opp farta.

if ($opt_u) {
	if ($opt_w) {
		while (<>) {
			chomp;
			-w $_ || ! -l $_ && print("$_\n");
		}
	} else {
		while (<>) {
			chomp;
			-r $_ || ! -l $_ && print("$_\n");
		}
	}
} else {
	if ($opt_w) {
		while (<>) {
			chomp;
			-w $_ && ! -l $_ && print("$_\n");
		}
	} else {
		while (<>) {
			chomp;
			-r $_ && ! -l $_ && print("$_\n");
		}
	}
}
